﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Woobao.VO;

namespace Woobao.DAO
{
    public class StatusDAO
    {
        public void Inserir(VOStatus obj)
        {
            TBStatu sta = new TBStatu();
            using (DBWoobaoEntities banco = new DBWoobaoEntities())
            {
                banco.TBStatus.Add(sta);
                banco.SaveChanges();
            }
        }

        TBStatu ConverterParaBanco(VOStatus vo)
        {
            TBStatu sta = new TBStatu();

            sta.IDStatus = vo.Codigo;
            sta.DEStatus = vo.Descricao;

            return sta;
        }

        VOStatus ConverterParaVO(TBStatu tb)
        {
            VOStatus vo = new VOStatus();

            vo.Codigo = tb.IDStatus;
            vo.Descricao = tb.DEStatus;

            return vo;
        }

        public List<VOStatus> Consultar(VOStatus filtro)
        {
            using (DBWoobaoEntities banco = new DBWoobaoEntities())
            {
                var query = from u in banco.TBStatus
                            where
                            (u.DEStatus.Contains(filtro.Descricao) || filtro.Descricao == null)
                            &&
                            (u.IDStatus == filtro.Codigo || filtro.Codigo == 0)
                            select u;
                List<TBStatu> lista = query.ToList();
                List<VOStatus> listaRetorno = new List<VOStatus>();
                foreach (var item in lista)
                {
                    listaRetorno.Add(ConverterParaVO(item));
                }
                return listaRetorno;
            }
                        
        }

        public void Atualizar(VOStatus obj)
        {
            using (DBWoobaoEntities banco = new DBWoobaoEntities())
            {
                TBStatu sta = banco.TBStatus.Where(q => q.IDStatus == obj.Codigo).Single();
                sta.IDStatus = obj.Codigo;
                sta.DEStatus = obj.Descricao;

                banco.SaveChanges();
            }
        }

        public void Excluir(int codigo)
        {
            using (DBWoobaoEntities banco = new DBWoobaoEntities())
            {
                TBStatu sta = banco.TBStatus.Where(q => q.IDStatus == codigo).Single();
                banco.TBStatus.Remove(sta);
                banco.SaveChanges();
            }
        }
    }
}
